#pragma once
// 自定义的格式化字符串输出函数

#define MAX_UINT32_VALUE (uint32_t) 0xffffffff // 最大的32位无符号数（在Sprintf_num中使用）
#define INT64_LEN (sizeof("-9223372036854775808") - 1)// 64位有符号整数的十进制字符串表示的最大长度（在Sprintf_num中使用）


void Rtrim(char *string);//截取字符串尾部空格
void Ltrim(char *string);//截取字符串首部空格

// 输出相关的函数声明(安全版格式化函数，类似format)
// 安全版格式化函数，通过最大长度限定防止溢出
u_char *Snprintf(u_char *buf, size_t max, const char *fmt, ...);
// 安全版格式化函数，通过缓冲区末尾指针防止溢出
u_char *Slprintf(u_char *buf, u_char *last, const char *fmt, ...);
// 上面两个格式化函数的公共处理模块，是通过尾指针防止溢出
u_char *Vslprintf(u_char *buf, u_char *last, const char *fmt, va_list args);
// 将整数数字字符串转换为指定宽度的正整数并添加到缓冲区中函数,不够会填充0或空格
static u_char *Sprintf_num(u_char *buf, u_char *last, uint64_t ui64,u_char zero, uintptr_t hexadecimal, uintptr_t width);